/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logica.Comandos;

import AccesoDatos.Fabricas.DAO;
import AccesoDatos.Fabricas.DAO.Opciones;
import Excepciones.NoConexionException;
import Logica.Fabricas.Comando;
import ObjetoDominio.Archivo;
import Session.Session;

/**
 *Comando que se encarga de subir un archivo al repositorio
 * @author familia
 */
public class ComandoCargarArchivo extends Thread implements Comando<Boolean> {

    private Archivo _archivo;
    
    public ComandoCargarArchivo(Archivo archivo){
        _archivo = archivo;
    }
    
    @Override
    public void run(){
        try {
            while(_archivo.getDescargado() < _archivo.getTamaño()){
                if(!Session.isSesion())
                    break;            
                if(Session.getServidorConectado().isActivo()){
                    DAO.ObtenerDAO(Opciones.socket).ObtenerDAOArchivo(
                        Session.getServidorConectado()).CargarArchivo(_archivo);
                }
    
            
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
    
    @Override
    public Boolean Ejecutar() throws NoConexionException {
        this.start();
        return true;
    }

    @Override
    public void Detener() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void Pausar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void Reanudar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean esVivo() {
        return this.isAlive();
    }
    
}
